/**
 * Author(s): xuming.Wong <xuming.Wong@gmail.com>
 */

#ifndef __GameObject_H__
#define __GameObject_H__

#include "Object.h"

namespace PQClient
{
	enum GameObjectType
	{
		//Root
		GAME_OBJECT_ROOT,

		//Movable
		GAME_OBJECT_EMPTY,
		GAME_OBJECT_ENTITY,
		GAME_OBJECT_LIGHT,
		GAME_OBJECT_CAMERA,

		//None movable
		GAME_OBJECT_TERRAIN,
	};

	class GameObject
		: public Object
	{
	public:
		friend class SceneObject;

		GameObject(SceneObject* sceneObject,GameObjectType type);
		inline std::string getName()
		{
			return _name;
		}

		inline void setName(std::string name)
		{
			_name=name;
		}

	protected:
		static Ogre::SceneNode*  _rootSceneNode;
		static GameObject* _root;

		SceneObject* _sceneObject;

		std::string _name;//game object name
		Ogre::SceneNode* _sceneNode;//represent transform

	};
}

#endif
